#include <stdio.h>

extern int ok(int, int);
extern int ok2(int, int);
extern int ok3(int, int);
extern int not_ok(float, float);
extern int not_ok2(float, float);

typedef int (*ok_ptr)(int, int);
typedef int (*not_ok_ptr)(float, float);

int main() {
    ok_ptr func;
    int result;

    func = ok3;
    printf("--- test ok ---\n");
    func = (ok_ptr)not_ok;
    printf("begin to run ok\n");
    result = func(10, 20);
    printf("end to run ok, result is %d\n\n", result);

    return 0;
}
